package org2.jogo.activities;

import org2.jogo.Global;
import org2.jogo.PerguntasGravadas;
import org2.jogo.R;
import org2.jogo.Utils;
import adapters.PerguntasDbAdapter;
import android.content.Intent;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;

public class EditNomeActivity extends GameActivity implements AdapterView.OnItemSelectedListener {

    private int dificuldade;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String ultimoNome = getPreferences(MODE_PRIVATE).getString("ultimoNome", "");
        ((EditText) findViewById(R.id.txtNome)).setText(ultimoNome);
        Spinner spinner = (Spinner) findViewById(R.id.select_niveis);
        String[] dificuldades = new String[] { "Fácil", "Normal", "Difícil" };
        ArrayAdapter<String> adapter =
                new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, dificuldades);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(this);
        Button buttonConfirma = (Button) findViewById(R.id.confirma);
        buttonConfirma.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                if (nomePreenchido())
                    try {
                        PerguntasDbAdapter adapter = PerguntasDbAdapter.getDbAdapter(EditNomeActivity.this);

                        /*
                         * Trocar aqui o método de gerar as perguntas, se vai pegar as perguntas reais ou as de teste
                         */

                        PerguntasGravadas.inicializaPerguntas(adapter);
                        //PerguntasGravadas.gerarPerguntasTeste(adapter, 30);

                        String nome = ((EditText) findViewById(R.id.txtNome)).getText().toString();
                        Editor e = EditNomeActivity.this.getPreferences(MODE_PRIVATE).edit();
                        e.putString("ultimoNome", nome);
                        e.commit();
                        Global.inicializaJogo(adapter, dificuldade, nome);
                        Intent i = new Intent(EditNomeActivity.this, ExibePerguntaActivity.class);
                        startActivity(i);
                    } catch (Exception ex) {
                        Utils.showLongToast(EditNomeActivity.this,
                                "Desculpa, mas não foi possível iniciar o jogo pois não há perguntas o suficiente.");
                    }
                else {
                    Utils.showToast(EditNomeActivity.this, "Digite seu nome antes!");
                }
            }
        });
    }

    @Override
    public void onResume() {
        super.onResume();
        dificuldade = Global.dificuldadePadrao;
        Spinner spinner = (Spinner) findViewById(R.id.select_niveis);
        spinner.setSelection(dificuldade - 1);
    }
    
    public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
        dificuldade = position + 1;
    }

    public void onNothingSelected(AdapterView<?> arg0) {
        Utils.showToast(EditNomeActivity.this, "Por favor selecione uma dificuldade.");
    }

    public boolean nomePreenchido() {
        EditText txtNome = (EditText) findViewById(R.id.txtNome);
        String nome = txtNome.getText().toString();
        return (nome != null && nome.length() > 0);
    }

    @Override
    protected int getContentView() {
        return R.layout.prepara_jogo;
    }

    @Override
    protected int getMusicaFundo() {
        return 0;
    }

    @Override
    protected String getTitulo() {
        return "Iniciar jogo";
    }

}